-
Notifications
You must be signed in to change notification settings - Fork 0
Add CloudStack PR Health Dashboard with GitHub API integration #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
Copilot
wants to merge
10
commits into
main
Choose a base branch
from
copilot/add-cloudstack-pr-health-check
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+24,686
−1
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Co-authored-by: borisstoyanov <[email protected]>
Co-authored-by: borisstoyanov <[email protected]>
Co-authored-by: borisstoyanov <[email protected]>
Copilot
AI
changed the title
[WIP] Add CloudStack portal integration for GitHub PR health checks
Add CloudStack PR Health Dashboard with GitHub API integration
Nov 18, 2025
Copilot finished work on behalf of
borisstoyanov
November 18, 2025 11:44
- Add Matrix View (default): latest results per OS+Hypervisor combination - Add Detailed View: grouped by version with full test history - Add Historical Runs: flat table of all tests with filters Features: - Version normalization (4.20.0 = 4.20) - Filter unknown/empty versions automatically - Smart de-duplication keeping latest test only - Compact design with reduced padding and fonts - All filters work across all views API: - GET /api/upgrade-tests (with filters) - GET /api/upgrade-tests/filters - GET /api/upgrade-tests/stats Security: - Parameterized SQL queries (SQL injection safe) - Input validation on all filters - XSS protection via React UI/UX: - Color-coded status badges (PASS/FAIL/ERROR/SKIPPED/IN PROGRESS) - Quick action links (Console/Logs/Matrix) - Responsive tables with sticky headers - Loading states and error handling Docs: - Complete implementation guide (UPGRADE_TESTS_FINAL.md) - Updated README.md - .env.example for easy setup
Features added: - Download logs icon (📥) for PR health check results - Expandable failure details in PR cards - Test execution timestamps for hypervisor results - OS/Hypervisor name formatting (e.g., u22 → Ubuntu 22.04) - Upgrade tests accordion view with expandable failures - Test data created checkbox indicator - Heatmap view as default for upgrade tests - Removed unused view modes (Cards, Matrix, Detailed) - Improved accessibility and user experience
Security improvements: - Add comprehensive SECURITY.md documentation - Fix npm audit vulnerabilities in server dependencies - Document SQL injection prevention (parameterized queries) - Document XSS prevention (React auto-escaping) - Add security headers recommendations - Update README with security section and new features - Document input validation and CORS configuration - Add deployment security checklist All code already follows security best practices: ✅ Parameterized SQL queries (no SQL injection) ✅ React auto-escaping (no XSS) ✅ Input validation on API endpoints ✅ Environment variables for secrets ✅ CORS properly configured ✅ No dangerouslySetInnerHTML usage
The application only reads from database and doesn't make any GitHub API calls, so no token is required. This simplifies configuration and improves security. Changes: - Removed misleading rate limiting section from README - Replaced with database connection troubleshooting - Confirmed .env.example is correct (no token needed)
Prevent 'null' string values and empty versions from appearing in: - Upgrade test listings - Filter dropdowns - Statistics counts - Heatmap views Changes: - Added filtering to getUpgradeTestsFromDatabase() - Added filtering to getUpgradeTestFilters() - Added filtering to getUpgradeTestStats() - Filters check for: IS NOT NULL, != 'null', != '' Result: Cleaner UI with only valid upgrade paths displayed
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Implements a web dashboard for monitoring CloudStack health check PRs, displaying smoketest results, approvals, and code coverage metrics from GitHub.
Implementation
Frontend (React + TypeScript)
[HEALTH]PRs from apache/cloudstackBackend (Express + TypeScript)
/api/health-prs,/api/pr/:numberData Parsing
Architecture
Screenshots
Active Health Check Runs:

Search Results:

Upgrade Tests Tab:

Setup
npm run install:all cp .env.example .env # Add GITHUB_TOKEN to avoid rate limits npm run devSee
DEPLOYMENT.mdfor production deployment options.Security
Future Work
Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
https://api.github.com/repos/apache/cloudstack/pullsnode /home/REDACTED/work/QA-Portal/QA-Portal/node_modules/.bin/ts-node src/index.ts(http block)If you need me to access, download, or install something from one of these locations, you can either:
Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.